package edu.imac.angryfood.shapes;

import java.util.ArrayList;

import edu.imac.angryfood.world.Body;

/**
 * Decription of any class representing a shape for collision. The shape 
 * both defines the geometry and the collision properties. However, these
 * can be augmented at the Body level.
 * 
 */
public interface Shape {


	public static final float DEFAULT_DENSITY = 25.0f; // (25)
	public static final float DEFAULT_RESTIUTION = 0.3f; // (0.9)
	public static final float DEFAULT_FRICTION = 0.1f; // (0.1)
	
	/**
	 * get the body
	 * @return body
	 */
	Body getBody();
	
	/**
	 * create the shape in body
	 * @param body
	 */
	void createInBody(Body body);
	
	/**
	 * set the restitution
	 * @param rest
	 */
	void setRestitution(float rest);
	/**
	 * set the friction
	 * @param friction
	 */
	void setFriction(float friction);
	/**
	 * set density
	 * @param density
	 */
	void setDensity(float density);
	/**
	 * get the jboxShapes
	 * @return
	 */
    ArrayList<org.jbox2d.collision.Shape> getJBoxShapes();
    
    /**
     * get the slick shape
     * @return
     */
    org.newdawn.slick.geom.Shape getSlickShape();
}
